<?php 
App::uses('AppModel', 'Model');
App::uses('SimplePasswordHasher', 'Controller/Component/Auth');

class User extends AppModel {
    public $roles = array("Sin rol","Cocina","Cafeteria","Mozo","Administrador");
    
    public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A username is required'
            ),
            'regla1' => array( 
                // solo letras y numeros enteros - i: case insensitive
                // longitud: minimo 1 maximo 10 caracteres
                'rule'    => '/^[a-z0-9]{1,10}$/i',
                'allowEmpty' => false,
                'message' => 'El código no es un valor válido.'
            ),
            'regla2' => array( 
                // custom rule para controlar duplicados
                'rule' => array('existeOtro'),
                'message' => 'El código usado ya existe.'
            ),
        ),
        'password' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A password is required'
            )
        ),
        
        'nombre' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => 'notEmpty',
            'allowEmpty' => false,
            'message' => 'El nombre no puede estar vacio'
        ),
        'apellido' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => 'notEmpty',
            'allowEmpty' => false,
            'message' => 'El apellido no puede estar vacio'
        ),
        'dni' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => '/^[0-9]{8,11}$/i',
            'allowEmpty' => false,
            'message' => 'El DNI no es valido'
        ),
        'cargo' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => 'notEmpty',
            'allowEmpty' => true,
            'message' => 'El rol no puede estar vacio'
        ),
    );
    

    public function beforeSave($options = array()) {
//        if (isset($this->data[$this->alias]['password'])) {
//            $passwordHasher = new SimplePasswordHasher();
//            $this->data[$this->alias]['password'] = $passwordHasher->hash(
//                $this->data[$this->alias]['password']);
//        }
        return true;
    }    
    
     public function existeOtro() {
        // busca que no haya otro id con el mismo campo codigo
        $filtro_dup = array('User.id !=' => $this->id,             
                            'User.username' => $this->data['User']['username']);
        $cantExistentes = $this->find('count', array(
            'conditions' => $filtro_dup,
            'recursive' => -1
        ));
        return $cantExistentes == 0;
    }    
}?>
